SignalR কি?

Web Development - এএসপি ডট (ASP.Net) - SignalR ব্যবহার করে রিয়েল-টাইম অ্যাপ্লিকেশন |

SignalR হল একটি ASP.Net লাইব্রেরি যা রিয়েল-টাইম ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। এটি সার্ভার এবং ক্লায়েন্টের মধ্যে দ্বিমুখী যোগাযোগ (two-way communication) সক্ষম করে, অর্থাৎ সার্ভার ক্লায়েন্টকে push notification পাঠাতে পারে এবং ক্লায়েন্ট সার্ভারের সাথে রিয়েল-টাইমে যোগাযোগ করতে পারে। SignalR মূলত ওয়েবসকেট, লং পোলিং, এবং অন্যান্য প্রযুক্তির উপর ভিত্তি করে কাজ করে।

SignalR ব্যবহার করে আপনি অ্যাপ্লিকেশনে রিয়েল-টাইম ফিচারগুলো যেমন চ্যাট রুম, লাইভ আপডেট, লিডারবোর্ড, নোটিফিকেশন সিস্টেম ইত্যাদি তৈরি করতে পারেন।


SignalR এর মূল বৈশিষ্ট্য

SignalR এর মাধ্যমে আপনি সার্ভার এবং ক্লায়েন্টের মধ্যে সহজে রিয়েল-টাইম ডেটা ট্রান্সফার করতে পারেন। এর কিছু প্রধান বৈশিষ্ট্য হল:

  • Real-time communication: ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে রিয়েল-টাইমে যোগাযোগ করতে পারে।
  • Persistent connection: একবার ক্লায়েন্ট সার্ভারের সাথে সংযুক্ত হলে, সংযোগটি অব্যাহত থাকে যতক্ষণ না এটি বন্ধ করা না হয়।
  • Automatic reconnects: সংযোগ বিচ্ছিন্ন হলে SignalR ক্লায়েন্টকে স্বয়ংক্রিয়ভাবে পুনঃসংযোগ করতে সহায়তা করে।
  • Multiple transport options: SignalR বিভিন্ন ট্রান্সপোর্ট পদ্ধতি ব্যবহার করে (যেমন, WebSockets, Server-Sent Events, Long Polling) এবং ক্লায়েন্ট এবং সার্ভারের মধ্যে সেরা উপলব্ধ পদ্ধতি নির্বাচন করে।
  • Group communication: ক্লায়েন্টরা নির্দিষ্ট গ্রুপে যুক্ত হতে পারে এবং শুধুমাত্র সেই গ্রুপের সদস্যদের সাথে যোগাযোগ করতে পারে।

SignalR ব্যবহার করে Real-time Communication

SignalR সাধারণত Hub ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ করতে সাহায্য করে। Hub হল একটি বিশেষ ক্লাস যা method calls (ক্লায়েন্ট থেকে সার্ভারে এবং সার্ভার থেকে ক্লায়েন্টে) পরিচালনা করে।

১. SignalR Hub তৈরি করা

SignalR ব্যবহার করার জন্য প্রথমে একটি Hub ক্লাস তৈরি করতে হবে যা ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ পরিচালনা করবে।

public class ChatHub : Hub
{
    // ক্লায়েন্ট থেকে মেসেজ পাঠানোর জন্য একটি মেথড
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);  // সবাইকে মেসেজ পাঠান
    }
}

এখানে, SendMessage মেথডটি সার্ভারের একটি মেথড যা ক্লায়েন্ট থেকে আসা মেসেজ গ্রহণ করে এবং Clients.All.SendAsync এর মাধ্যমে সব ক্লায়েন্টে সেই মেসেজ পাঠিয়ে দেয়।

২. SignalR সার্ভারে কনফিগারেশন করা

আপনি Startup.cs ফাইলে SignalR সার্ভিস কনফিগার করতে হবে।

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSignalR();  // SignalR সার্ভিস যোগ করা
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseRouting();

        // SignalR রাউটিং কনফিগার করা
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<ChatHub>("/chathub");
        });
    }
}

এখানে, MapHub<ChatHub>("/chathub") এর মাধ্যমে SignalR Hub কে একটি URL পাথ /chathub তে মানচিত্রিত করা হয়েছে। এর মাধ্যমে ক্লায়েন্টরা এই URL পাথে রিকোয়েস্ট পাঠিয়ে সার্ভারের সাথে সংযুক্ত হতে পারে।

৩. SignalR ক্লায়েন্ট কনফিগারেশন

SignalR ক্লায়েন্টে JavaScript বা Blazor ব্যবহার করে হাবের সাথে যোগাযোগ করা হয়। উদাহরণস্বরূপ, JavaScript ক্লায়েন্টের কোড:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SignalR Chat</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/signalr/3.1.7/signalr.js"></script>
</head>
<body>
    <input type="text" id="userInput" placeholder="Enter your name" />
    <textarea id="messageInput" placeholder="Type a message"></textarea>
    <button id="sendButton">Send</button>

    <div id="messagesList"></div>

    <script>
        // SignalR Hub এর URL
        const connection = new signalR.HubConnectionBuilder()
            .withUrl("/chathub")
            .build();

        // মেসেজ গ্রহণ করার জন্য ক্লায়েন্টের মেথড
        connection.on("ReceiveMessage", function(user, message) {
            const msg = `${user}: ${message}`;
            const li = document.createElement("li");
            li.textContent = msg;
            document.getElementById("messagesList").appendChild(li);
        });

        // মেসেজ পাঠানোর জন্য
        document.getElementById("sendButton").addEventListener("click", function () {
            const user = document.getElementById("userInput").value;
            const message = document.getElementById("messageInput").value;
            connection.invoke("SendMessage", user, message).catch(function (err) {
                return console.error(err.toString());
            });
        });

        // SignalR সংযোগ শুরু
        connection.start().catch(function (err) {
            return console.error(err.toString());
        });
    </script>
</body>
</html>

এখানে:

  • connection.on("ReceiveMessage") ক্লায়েন্টে মেসেজ রিসিভ করার জন্য ব্যবহৃত হয়।
  • connection.invoke("SendMessage") সার্ভারে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।

SignalR এর ব্যবহার

SignalR এর মাধ্যমে বিভিন্ন ধরনের রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করা সম্ভব, যেমন:

  • চ্যাট অ্যাপ্লিকেশন
  • লাইভ ড্যাশবোর্ড
  • নোটিফিকেশন সিস্টেম
  • মাল্টিপ্লেয়ার গেমস
  • লাইভ স্কোর বা ট্র্যাকিং সিস্টেম

SignalR একটি শক্তিশালী প্রযুক্তি যা ASP.Net অ্যাপ্লিকেশনে রিয়েল-টাইম দ্বিমুখী যোগাযোগ সক্ষম করে। এটি ব্যবহারকারীদেরকে ইনস্ট্যান্ট আপডেট এবং কমিউনিকেশন প্রদান করতে সাহায্য করে। SignalR এর মাধ্যমে আপনি সহজেই চ্যাট অ্যাপ্লিকেশন, লাইভ ট্র্যাকিং, এবং অন্যান্য রিয়েল-টাইম ফিচার তৈরি করতে পারেন।

Content added By
Promotion